<?php
// redis
import("@.ORG.MyRedis");
class MoveModel extends Model {
    // 自动验证设置
    protected $_validate = array(
        array('m_title', 'require', '请填写标题！'),
        array("m_content", 'require', '请填写留言内容！'),
    );
    
    public $infoPrefix = "move";
    /**
     * 设置缓存变量
     *
     * @param  int  $id   动态ID
     */
    public function getRedisPrefix($id)
    {
        if (empty($id)) {
            return '';
        }

        return $this->infoPrefix . "_" . $id;
    }

    public function setRedisPrefix($redisKey)
    {
        if(empty($redisKey)) 
        {
            return '';
        }


        $keys = explode("-", $redisKey);
        return $keys[1];
    }

    /**
     * 获取一条动态信息
     * @param  int  $iMoveId  动态ID 
     * @return array
     */
    public function getMoveOne($iMoveId = 0)
    {
        if (empty($iMoveId)) 
        {
            return array();
        }

        $redis = new MyRedis();
        $redisMoveId = $this->getRedisPrefix($iMoveId);

        // 返回数据.
        $oneArr = array();

        if ($redis->exists($redisMoveId))
        {
            $oneArr = $redis->get($redisMoveId);
        }
        else
        {
            $oneArr = $this->where("m_id={$iMoveId}")->find();

            $r = $redis->set($redisMoveId, $oneArr);
            if (!$r)
            {
                throw new Exception("缓存设置失败！");
            }
        }

        return $oneArr;
    }

    /**
     * 清除缓存
     *
     * @param  int  $idMoveId   缓存ID
     * @return  boolear 
     */
    public function clear($idMoveId)
    {
        if (empty($idMoveId)) 
        {
            return false;
        }

        $movePrefix = $this->getRedisPrefix();
        $redis = new MyRedis();

        // 判断缓存是否存在
        $isExists = $redis->exists();
        
        if (!$isExists)
        {
            return true;
        }

        // 删除缓存
        $r = $redis->delete($movePrefix);

        if ($r)
        {
            return true;
        }

        return false;
    }

    /**
     * 获取上一条记录
     * @param   int    $id   动态ID
     * @return  int          上一条ID
     */
    public static function lastSectionRecord($id)
    {
        if (empty($id))
        {
            return null;
        }

        $lastId = M("Move")->field("m_id")->where("m_id < " . $id)->order("m_id desc")->limit(1)->find();
        
        if (!empty($lastId['m_id'])) {
            return $lastId['m_id'];
        }

        return null; 
    }

    /**
     * 获取下一条记录
     * @param   int    $id   动态ID
     * @return  int          下一条ID
     */
    public static function nextSectionRecord($id)
    {
        if (empty($id))
        {
            return null;
        }

        $nextId = M("Move")->field("m_id")->where("m_id > " . $id)->order("m_id asc")->limit(1)->find();
        
        if (!empty($nextId['m_id'])) {
            return $nextId['m_id'];
        }

        return null; 
    }
}
?>